import Vue from "vue";
import VueRouter from "vue-router";
import routes from "./routes";
import store from "../store";

Vue.use(VueRouter);

const router = new VueRouter({
	mode: "history",
	base: process.env.BASE_URL,
	routes,
});

// 添加路由前置守卫，检查用户是否登录
router.beforeEach((to, from, next) => {
	// 每当导航切换时（包含刷新页面的第一次），该函数会运行
	// from：之前的路由对象  (this.$route)
	// to: 即将进入的路由对象 (this.$route)
	// next: 确认导航的一个函数  调用该函数（无参），就会直接进入to， 调用该函数（传入参数），根据传入参数进入新的导航
	// 如果进入的页面需要权限
	if (to.meta.auth) {
		const status = store.getters["loginUser/status"];
		if (status === "loading") {
			// 还在加载中，跳转至加载页面
			next({
				name: "Loading",
				query: {
					fromName: to.name,
				},
			});
		} else if (status === "login" && localStorage.getItem("user")) {
			// 登录过了
			next();
		} else {
			// 没登录过，需要登录
			alert("请先登录");
			next({
				name: "Login",
				query: {
					fromName: to.name,
				},
			});
		}
	} else {
		// 不需要鉴权则直接进入
		next();
	}
});

export default router;
